package principle.liskovSubstitutionPrinciple.perfection;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.math.BigDecimal;

/**
 * @author： pang-yun
 * @date： 2021-08-25 11:20
 * 功能目的 ：用于  信用卡的模拟实现 继承了 储蓄卡  保留父类的原有功能  只是在功能前后添加 而不是对原功能修改
 */
public class CreditCard  extends CashCard {
    private Logger logger= LoggerFactory.getLogger(CreditCard.class);
    public CreditCard(int cardNo, String cardDate) {
        super(cardNo, cardDate);
    }

    /**
     * 重新写写一个判断 而不是 继承原来的
     * @param amount
     * @return
     */
    boolean ruleC(BigDecimal amount) {
        return amount.compareTo(new BigDecimal(1000))<=0;
    }

    /**
     *贷款 ： 在BankCard 的negative 方法上 添加一些 操作  ---里氏替换---
     * @param orderId
     * @param amount
     * @return
     */
    public String loan(int orderId, BigDecimal amount){
      if (!ruleC(amount)){
            logger.info("贷款失败 金额超出限制");
            return "0001";
      }
      logger.info("贷款成功！！");
      return super.negative(orderId,amount);
    };


    public String repayment(int orderId,BigDecimal amount){
        //模拟生成还款单
        logger.info("还款！！");
        return super.positive(orderId,amount);
    }



}
